在《Spring-Boot-shiro权限控制》中,当用户访问没有权限的资源时,我们采取的做法是跳转到403页面,但在实际项目中更为常见的做法是只显示当前用户拥有访问权限的资源链接。配合Thymeleaf中的Shiro标签可以很简单的实现这个目标。
实际上Thymeleaf官方并没有提供Shiro的标签,我们需要引入第三方实现,地址为https://github.com/theborakompanioni/thymeleaf-extras-shiro。
引入thymeleaf-extras-shiro
在pom中引入:
1 | <dependency> |
ShiroConfig配置
引入依赖后,需要在ShiroConfig中配置该方言标签:
1 |
|
首页改造
更改index.html,用于测试Shiro标签的使用:
1 |
|
值得注意的是,在html页面中使用Shiro标签需要给html标签添加xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"
。
测试
启动项目,使用mrbird(角色为admin,具有user:user,user:add,user:delete权限)账户登录:
使用tester(角色为tester,仅有user:user权限)账户登录:
更多标签
The following examples show how to integrate the tags in your Thymeleaf templates. These are all implementations of the examples given in the JSP / GSP Tag Library Section of the Apache Shiro documentation.
Tags can be written in attribute or element notation:
Attribute
1 | <p shiro:anyTag> |
Element
1 | <shiro:anyTag> |
The guest
tag
1 | <p shiro:guest=""> |
The user
tag
1 | <p shiro:user=""> |
The authenticated
tag
1 | <a shiro:authenticated="" href="updateAccount.html">Update your contact information</a> |
The notAuthenticated
tag
1 | <p shiro:notAuthenticated=""> |
The principal
tag
1 | <p>Hello, <span shiro:principal=""></span>, how are you today?</p> |
or
1 | <p>Hello, <shiro:principal/>, how are you today?</p> |
Typed principal and principal property are also supported.
The hasRole
tag
1 | <a shiro:hasRole="administrator" href="admin.html">Administer the system</a> |
The lacksRole
tag
1 | <p shiro:lacksRole="administrator"> |
The hasAllRoles
tag
1 | <p shiro:hasAllRoles="developer, project manager"> |
The hasAnyRoles
tag
1 | <p shiro:hasAnyRoles="developer, project manager, administrator"> |
The hasPermission
tag
1 | <a shiro:hasPermission="user:create" href="createUser.html">Create a new User</a> |
The lacksPermission
tag
1 | <p shiro:lacksPermission="user:delete"> |
The hasAllPermissions
tag
1 | <p shiro:hasAllPermissions="user:create, user:delete"> |
The hasAnyPermissions
tag
1 | <p shiro:hasAnyPermissions="user:create, user:delete"> |
源码地址:https://github.com/wuyouzhuguli/Spring-Boot-Demos/tree/master/16.Spring-Boot-Shiro-Thymeleaf-Tag